In the past, in a case of receiving a request for allocation of, for example, 10 TB of storage area from a server, a storage device allocates a physical disk capacity of 10 TB. In contrast, there is a case that the server actually uses only 20% through 30% of the allocated amount out of the physical disk capacity allocated as requested. In such a manner, there is a case that a physical disk capacity allocated to a server is not utilized efficiently.
Given such a situation, as an arrangement for efficiently using a physical disk capacity of a storage device, there is a technique called thin provisioning. In thin provisioning, in a case of receiving a request for allocation of 10 TB from a server, for example, a storage device allocates a virtual volume of 10 TB to the server as requested, while actually allocating a physical disk capacity of only 2 TB.
Then, in a case that the server uses a physical disk capacity exceeding a predetermined threshold, the storage device allocates a fresh additional physical disk capacity to the server. In such a manner, thin provisioning allocates a physical disk capacity at the time of a host access request as the occasion arises. This enables the storage device to efficiently utilize the physical disk capacity. The virtual volume used at this time is called as a thin provisioning volume (TPV), and a smallest unit of the physical disk capacity allocated to the TPV is called as a thin provisioning pool slice (TPPS).
In a case that data is deleted by the server, the deleted data is handled as unused in the operating system (OS) of the server. In contrast, since the TPPS is still allocated to the deleted data in the storage device, the storage device turns out to consume the physical disk capacity uselessly.
As an arrangement to improve this, there is an UNMAP command. An UNMAP command is a command to request the TPV in the storage device for release of the TPPS by specifying a logical address of the unused TPPS. The server issues this UNMAP command to the storage device in coordination with the deletion of data, thereby efficiently operating the TPPS allocated by thin provisioning. The UNMAP command is one of vStorage APIs (application programming interfaces) for array integration (VAAI) out of storage APIs provided by VMware.
The storage device sometimes has a copy function of a snapshot type that logically copies TPPS data. The UNMAP command is allowed to be used together with the copy function executed by the storage device. For example, in a case that an UNMAP command is issued to uncopied TPPS data, the storage device copies the TPPS data and releases the TPPS after finishing the copy. Then, after releasing the TPPS, the storage device responds to the server for the UNMAP command.
The UNMAP command has a capacity, subjected to be processed in a single request from a host, from several GB to several tens of GB or even more, and in comparison with regular write I/O (input/output), the capacity subjected to be processed is large. Therefore, in a case that the storage device receives an UNMAP command and copies all the range requested by the UNMAP command, the time until the UNMAP command is executed increases. As a result, since the server is not able to receive a response to the UNMAP command until finishing TPPS release process by the storage device, there is a higher possibility that the UNMAP command is timed out.
Given such a situation, the storage device records that release process is in a state of being reserved for the TPPS requested for release and immediately returns a response to the UNMAP command to the server. Then, the storage device executes the release process asynchronously at the time of completion of saving the TPPS data to a copy destination to release the TPPS. In such a manner, the storage device keeps an UNMAP command issued to a region subjected to copy from being timed out.
Japanese Laid-open Patent Publication No. 2009-251970 and Japanese Laid-open Patent Publication No. 2011-13821 disclose related techniques.
However, the techniques in the past described above have a problem of delaying data writing that specifies a logical address specified in the request for release.
In a case that a request for writing data is issued to the TPPS of release process in a reserved state, the storage device puts the request for writing data on standby until the TPPS data is copied and the TPPS is released after finishing the copy. Therefore, the server is not able to receive a response to the request for writing data until finishing the TPPS release process by the storage device, and there is a higher possibility that the request for writing data is timed out.
In addition, the storage device sometimes executes copy of a snapshot type to identical TPPS data at different time. Then, in a case that, after an UNMAP command is issued to the TPPS of a copy source, a request for writing data is issued to the TPPS of release process in a reserved state, the request for writing data is put on standby until finishing the TPPS release process by the storage device. As a result, the possibility that the request for writing data is timed out becomes even higher.
Still in addition, the storage device sometimes executes an UNMAP command and copy of a snapshot type alternately. In such a case, a response performance of the data writing process to the TPPS of release process in a reserved state decreases chronically.